package com.hksj.common.quartz.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hksj.common.core.model.Rest;
import com.hksj.common.quartz.dto.CronJobDTO;
import com.hksj.common.quartz.entity.CronJob;
import com.hksj.common.quartz.query.CronJobQuery;
import com.hksj.common.quartz.vo.CronJobVO;
import com.hksj.common.quartz.service.CronJobService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Api(tags = "cron-定时任务管理器")
@RestController
@RequestMapping("/api/cronJob")
public class CronJobController {

	Logger logger = LoggerFactory.getLogger(this.getClass());
	
	@Autowired
	public CronJobService cronJobService;

	@GetMapping("/getCronJob/{id}")
	@ApiOperation(value = "获取任务详情信息")
	public Rest<CronJobVO> getCronJob(@PathVariable Long id){
		CronJobVO cronJob = cronJobService.getCronJob(id);
		return Rest.ok(cronJob);
	}

	@PostMapping("/saveCronJob")
	@ApiOperation(value = "保存定时任务")
	public Rest saveCronJob(@RequestBody CronJobDTO dto){
		cronJobService.saveCronJob(dto);
		return Rest.ok();
	}

	@DeleteMapping("/delCronJob/{id}")
	@ApiOperation(value = "删除任务")
	public Rest delCronJob(@PathVariable Long id){
		cronJobService.delCronJob(id);
		return Rest.ok();
	}

	@GetMapping("/pauseJob/{id}")
	@ApiOperation(value = "暂停任务")
	public Rest pauseJob(@PathVariable Long id){
		cronJobService.pauseJob(id);
		return Rest.ok();
	}

//	@GetMapping("/resumeJob/{id}")
//	@ApiOperation(value = "恢复任务")
//	public Rest resumeJob(@PathVariable Long id){
//		cronJobService.resumeJob(id);
//		return Rest.ok();
//	}

	@GetMapping("/startJob/{id}")
	@ApiOperation(value = "启动任务")
	public Rest startJob(@PathVariable Long id){
		cronJobService.startJob(id);
		return Rest.ok();
	}

	@PostMapping("/pageCronJob")
	@ApiOperation(value = "分页查询定时任务",response = CronJob.class)
	public Rest<IPage<CronJob>> pageCronJob(@RequestBody CronJobQuery query){
    	IPage<CronJob> page = cronJobService.pageCronJob(query);
		return Rest.ok(page);
	}
}